﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Espam.Idiomas.Decimo.Tesis.Negocio;
using System.Drawing;
using Microsoft.Reporting.WebForms;
using System.IO;

namespace Espam.Idiomas.Decimo.Tesis.Web
{
    public partial class UI_Matriculas : System.Web.UI.Page
    {
        string validaSession = "";
        
        protected void Page_Load(object sender, EventArgs e)
        {
            btnImprimir.Click += new EventHandler(btnImprimir_Click1);

            if (!IsPostBack)
            {
                Response.Cache.SetCacheability(HttpCacheability.ServerAndNoCache);
                Response.Cache.SetAllowResponseInBrowserHistory(false);
                Response.Cache.SetNoStore();

                if (Session["userEspamIdiomasVarSession001"] == null || Session["rolEspamIdiomasVarSession003"] == null)
                {
                    validaSession = "NoHaIniciadoSession";
                    Response.Redirect("UI_Login.aspx?validaSession=" + validaSession);
                }
                else if (Session["userEspamIdiomasVarSession001"] != null && Session["rolEspamIdiomasVarSession003"].ToString() == "Docente")
                {
                    Response.Redirect("UI_DashboardTeacher.aspx");
                }
                else if (Session["userEspamIdiomasVarSession001"] != null && Session["rolEspamIdiomasVarSession003"].ToString() == "Administradores")
                {
                    Response.Redirect("Default.aspx");
                }
                else if (Session["userEspamIdiomasVarSession001"] != null && Session["rolEspamIdiomasVarSession003"].ToString() == "Alumno")
                {
                    ConsultaMatricula();
                }
            }
        }
        private void ocultaFormulario()
        {
            filaMatricula.Visible = false;
            fila2Matricula.Visible = false;
            idMensajeMatricula.Visible = true;
        }
        private void ConsultaMatricula()
        {
            Validaciones oValida = new Validaciones();
            List<Modulos> lista = new List<Modulos>();
            Modulos oModulos = new Modulos();
            oModulos.idAlumno = (int)Session["idAlumnoEspamIdiomasVarSession005"];
            lista = oModulos.CompruebaNivel();
            int nivelAMatricular = (lista[0].nivel + 1);
            oModulos.nivel = nivelAMatricular;
            if (lista[0].estadoModuloMatricula == "Matriculado")
            {
                lblMensajeErrorMatricula.Text = "MATRICULADO";
                ocultaFormulario();
                tablaMatriculado.Visible = true;
                lblNumeroMatricula.Text = lista[0].numeroMatricula;
                lblNivelMatriculado.Text = lista[0].descripcionNivel;
                lblHorarioMatriculado.Text = lista[0].horario;
                lblFechaInicioModulo.Text = lista[0].fechaInicio.ToShortDateString();
                lblFechaFinModulo.Text = lista[0].fechaFin.ToShortDateString();
                lblUbicacion.Text = lista[0].ubicacion;
                imgPortadaLibro.ImageUrl = "img/LibrosInglesModulos/" + lista[0].patchLibro;
                lblLibro.Text = "Libro "+lista[0].libro + " Unidades " + lista[0].unidades;
                lista.Clear();
            }
            else
            {
                oModulos.fechaInicio = DateTime.Parse(DateTime.Today.ToShortDateString());
                oModulos.fechaFin = DateTime.Parse(DateTime.Today.ToShortDateString());
                oModulos.horaInicio = DateTime.Now.ToShortTimeString();
                oModulos.horaFin = DateTime.Now.ToShortTimeString();
                lista = oModulos.comprueba();
                if (lista.Count > 0)
                {
                    ddlHorarioNivel.DataSource = lista;
                    ddlHorarioNivel.DataTextField = "horario";
                    ddlHorarioNivel.DataValueField = "idModulo";
                    ddlHorarioNivel.DataBind();
                    lblAvisa.Text = oValida.NivelAMatricular(nivelAMatricular);
                }
                else
                {
                    ocultaFormulario();
                    lblMensajeErrorMatricula.Text = "Ningún Módulo Disponible";
                }
            }
        }
        protected void btnMatricularme_Click(object sender, EventArgs e)
        {
            string mensaje = "";
            if (this.IsValid)
            {
                if (btnMatricularme.Text == "Matricularme")
                {
                    Matriculas oMatricular = new Matriculas();
                    oMatricular.idAlumno = (int)Session["idAlumnoEspamIdiomasVarSession005"];
                    oMatricular.idModulo = int.Parse(ddlHorarioNivel.SelectedValue);
                    oMatricular.fecha = DateTime.Parse(DateTime.Now.ToShortDateString());
                    mensaje = oMatricular.MatricularAlumno();
                    if (mensaje=="MATRICULADO CORRECTAMENTE")
                    {
                        ocultaFormulario();
                        lblMensajeErrorMatricula.Text = "MATRICULADO";
                        tablaMatriculado.Visible = true;
                        ConsultaMatricula();
                    }
                    else
                    {
                        lblvalida.Text = mensaje;
                        lblvalida.ForeColor = Color.Red;
                        lblvalida.Visible = true;
                        ConsultaMatricula();
                    }
                }
            }
        }

        protected void btnImprimir_Click1(object sender, EventArgs e)
        {

            try
            {
                //crea reporte
                ReportViewer viewer = new ReportViewer();
                viewer.LocalReport.ReportPath = Server.MapPath("Reports/Students/Comprobante_Matriculado.rdlc");
                List<ReportParameter> parametros = new List<ReportParameter>();
                parametros.Add(new ReportParameter("estudiante", Session["nameEspamIdiomasVarSession006"].ToString() + " " + Session["lastNameEspamIdiomasVarSession005"].ToString()));
                parametros.Add(new ReportParameter("nivel", lblNivelMatriculado.Text));
                parametros.Add(new ReportParameter("horario", lblHorarioMatriculado.Text));
                parametros.Add(new ReportParameter("fechaInicio", lblFechaInicioModulo.Text));
                parametros.Add(new ReportParameter("fechaFin", lblFechaFinModulo.Text));
                parametros.Add(new ReportParameter("ubicacion", lblUbicacion.Text));
                parametros.Add(new ReportParameter("material", lblLibro.Text));
                parametros.Add(new ReportParameter("numeroMatricula", lblNumeroMatricula.Text));
                parametros.Add(new ReportParameter("fecha", DateTime.Now.ToShortDateString()));
                ///cambios agregados SANTANDER
                ///
                string nameCaracteres = Session["nameEspamIdiomasVarSession006"].ToString().Substring(0,1);
                string apeCaracteres = Session["lastNameEspamIdiomasVarSession005"].ToString().Substring(0,1);

                string[] cadena = lblNumeroMatricula.Text.Split(new Char[] { '-' });
                string[] cadenaFecha = DateTime.Now.ToShortDateString().Split(new Char[] { '/' });
                string randon = Path.GetRandomFileName();
                string randon2 = Path.GetRandomFileName();
                string encritptado = apeCaracteres+nameCaracteres + "/%&"+ randon + "/%&" + cadenaFecha[0] + "" + cadenaFecha[1] + "" + cadenaFecha[2] + "" + randon2 + "/%&" + cadena[1] + "/%&";
                parametros.Add(new ReportParameter("encriptado", encritptado));
                viewer.LocalReport.SetParameters(parametros);

                //exporta reporte a pdf
                string mimeType;
                string encoding;
                string fileNameExtension;
                string[] streams;
                Warning[] warnings;
                byte[] pdfContent = viewer.LocalReport.Render("PDF", string.Empty, out mimeType, out encoding, out fileNameExtension, out streams, out warnings);

                //////cambios santander
                //string outputPath = @"C:\Users\SANTANDER\Documents\documentos\PdfReport.pdf";
                //using (FileStream fs = new FileStream(outputPath, FileMode.Create))
                //{
                //    fs.Write(pdfContent, 0, pdfContent.Length);
                //    fs.Close();
                //}
                this.Response.Clear();
                this.Response.ContentType = "application/pdf";
                this.Response.AddHeader("Content-disposition", "attachment; filename=Comprobante_Matriculado.pdf");
                this.Response.BinaryWrite(pdfContent);
                //this.Response.End();  
            }
            catch (Exception)
            {
                //throw new Exception();
                Response.Redirect("Ui_Matriculas");
            }
        }

        protected void Button1_Click(object sender, EventArgs e)
        {

        }
    }
}